/*
             LUFA Library
     Copyright (C) Dean Camera, 2009.
              
  dean [at] fourwalledcubicle [dot] com
      www.fourwalledcubicle.com
*/

#ifndef _USBTOINTDESCRIPTORS_H_
#define _USBTOINTDESCRIPTORS_H_

	/* Includes: */
		#include <avr/pgmspace.h>
		#include <LUFA/Drivers/USB/USB.h>

	/* Global Defines */
                #define DATA_OUT_EPADDR 1
                #define DATA_IN_EPADDR  2
                
                #define EPSIZE 1
		#define DATA_OUT_EPSIZE    EPSIZE
		#define DATA_IN_EPSIZE     EPSIZE


	/* Type Defines: */

		/** Type define for the device configuration descriptor structure. This must be defined in the
		 *  application code, as the configuration descriptor contains several sub-descriptors which
		 *  vary between devices, and which describe the device's usage to the host.
		 */
		typedef struct
		{
			USB_Descriptor_Configuration_Header_t Config;
			USB_Descriptor_Interface_t            Interface;
	                USB_Descriptor_Endpoint_t             DataOUTEndpoint;
	                USB_Descriptor_Endpoint_t             DataINEndpoint;
		} USB_Descriptor_Configuration_t;

	/* External Variables: */
		//extern USB_Descriptor_Configuration_t ConfigurationDescriptor;

	/* Macros: */

	/* Function Prototypes: */
		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
		                                    const uint8_t wIndex,
		                                    const void** const DescriptorAddress)
		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);

#endif
